<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Basic Encoding Rules</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Basic_Encoding_Rules"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Basic_Encoding_Rules rootpage-Basic_Encoding_Rules skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Basic Encoding Rules</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>Le codage <i><b>Basic Encoding Rules</b></i> (règles d'encodage basique), dont l'acronyme est <b>BER</b>, est un des formats d'<a href="Codage_des_caract%C3%A8res" title="Codage des caractères">encodage</a> définis par le standard <a href="ASN.1" title="ASN.1">ASN.1</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Description">Description</h2></div>
<p>Le BER fait partie des premières règles édictées par le standard <a href="ASN.1" title="ASN.1">ASN.1</a> pour l'encodage d'informations abstraites dans un flux de données. Les règles, connues dans le jargon ASN.1 comme la <i>syntaxe de transfert</i>, donnent les séquences exactes d'octets qui sont utilisées pour encoder une donnée. Cette syntaxe définit les éléments suivants : la représentation des types de données de base, la façon de construire des éléments complexes ou composés à partir d'éléments plus basiques. La syntaxe du codage BER, ainsi que ses sous-ensembles <i>Canonical Encoding Rules</i> (CER) et <i><a href="Distinguished_Encoding_Rules" title="Distinguished Encoding Rules">Distinguished Encoding Rules</a></i> (DER) sont définis dans les standards X.690 <a href="https://en.wikipedia.org/wiki/X.690" class="extiw external" title="en:X.690"><span class="indicateur-langue" title="Article en anglais : « X.690 »">(en)</span></a> de l'<a href="Union_internationale_des_t%C3%A9l%C3%A9communications" title="Union internationale des télécommunications">ITU-T</a>, qui sont eux-mêmes une partie de la série de documents de l'ASN.1.
</p><p>Le format BER donne un format pour encoder les structures de données ASN.1, qui se décrit et se délimite lui-même. Chaque élément est encodé avec un type, une longueur, les valeurs et si nécessaire un marqueur de fin. Ce type d'encodage est couramment surnommé <i>type-length-value <a href="https://en.wikipedia.org/wiki/Type-length-value" class="extiw external" title="en:Type-length-value"><span class="indicateur-langue" title="Article en anglais : « Type-length-value »">(en)</span></a></i> (type-longueur-valeur) ou simplement encodage TLV. Ce format permet au récepteur du message de décoder des données au format ASN.1 même si le flux est incomplet et sans avoir de connaissances a priori de la taille, du contenu et de la sémantique des données<sup id="cite_ref-X.690_1-0" class="reference"><a href="#cite_note-X.690-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Comparaison_par_rapport_à_des_formats_alternatifs"><span id="Comparaison_par_rapport_.C3.A0_des_formats_alternatifs"></span>Comparaison par rapport à des formats alternatifs</h2></div>
<p>La différence clé du format BER (et également CER et DER) est la flexibilité apportée par sa syntaxe. Comme le dit le standard X.690 : « <i>des encodages alternatifs sont permis par le BER comme une option de l'émetteur. Les récepteurs qui se disent conformes au BER devraient accepter toutes les alternatives</i> »<sup id="cite_ref-X.690_1-1" class="reference"><a href="#cite_note-X.690-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>. Par exemple, lorsqu'il encode une valeur composée (c'est-à-dire une valeur composée de plusieurs valeurs plus petites et déjà encodées), l'émetteur peut utiliser une des trois formes pour indiquer la longueur des données<sup id="cite_ref-X.690_1-2" class="reference"><a href="#cite_note-X.690-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>. Le récepteur doit être capable d'accepter tous les encodages conformes pour se dire conforme au codage BER. D'un autre côté, les encodages CER et DER font de la longueur une spécification optionnelle.
</p><p>Une idée commune sur BER est qu'il serait « inefficace » comparé à d'autres règles d'encodage. Les défenseurs de BER ont argumenté que cette impression était surtout due aux implémentations ratées plutôt qu'à des faiblesses dans les règles d'encodage<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. Ces implémentations reposent sur la flexibilité de BER pour utiliser une logique d'encodage plus facile à coder, mais qui produit des données plus grosses que nécessaires. Que ces insuffisances soit réelles ou pas, cela a conduit à de nombreuses alternatives d'encodage dont le <i>Packed Encoding Rules <a href="https://en.wikipedia.org/wiki/Packed_Encoding_Rules" class="extiw external" title="en:Packed Encoding Rules"><span class="indicateur-langue" title="Article en anglais : « Packed Encoding Rules »">(en)</span></a></i>, qui a pour objectif d'améliorer les performances et la taille de BER.
</p><p>Des alternatives fournissant la flexibilité de BER mais utilisant d'autres encodages sont toujours développées. Les plus populaires sont basées sur <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>, comme le <i>XML Encoding Rules <a href="https://en.wikipedia.org/wiki/XML_Encoding_Rules" class="extiw external" title="en:XML Encoding Rules"><span class="indicateur-langue" title="Article en anglais : « XML Encoding Rules »">(en)</span></a></i> et l'ASN.1 <a href="SOAP" title="SOAP">SOAP</a><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>. De plus, il existe un standard pour convertir les schémas XML en schémas ASN.1 qui peut lui-même être encodé en utilisant BER<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Utilisation">Utilisation</h2></div>
<p>BER reste malgré tout un format populaire pour transmettre des données entre des systèmes dont l'encodage natif diffère :
</p>
<ul><li>le protocole <a href="Simple_Network_Management_Protocol" title="Simple Network Management Protocol">SNMP</a> demande l'encodage ASN.1 avec BER ;</li>
<li>le standard de signature numérique <a href="Public_Key_Cryptographic_Standards" title="Public Key Cryptographic Standards">PKCS#7</a> utilise également ASN.1 avec BER pour encoder les messages chiffrés ;</li>
<li>de nombreux systèmes de <a href="T%C3%A9l%C3%A9communications" title="Télécommunications">télécommunications</a> utilisent ASN.1 avec BER pour transmettre des messages à travers leur réseau<sup id="cite_ref-asn1-uses_5-0" class="reference"><a href="#cite_note-asn1-uses-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>, comme l'<a href="R%C3%A9seau_num%C3%A9rique_%C3%A0_int%C3%A9gration_de_services" title="Réseau numérique à intégration de services">ISDN</a> et les services de <a href="T%C3%A9l%C3%A9phonie_mobile" title="Téléphonie mobile">téléphonie mobile</a> ;</li>
<li>les messages <a href="Lightweight_Directory_Access_Protocol" title="Lightweight Directory Access Protocol">LDAP</a> sont encodés en BER.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-X.690-1"><span class="reference-text">ITU-T X.690, ISO 8825-1</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text">Lin, Huai-An. "Estimation of the Optimal Performance of ASN.1/BER Transfer Syntax". ACM Computer Communication Review. July 93, 45 - 58.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text">ITU-T Rec. X.892, ISO/IEC 24824-2</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text">ITU-T X.694, ISO/IEC ISO/IEC 8825-5</span>
</li>
<li id="cite_note-asn1-uses-5"><span class="mw-cite-backlink"><a href="#cite_ref-asn1-uses_5-0">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://asn1.elibel.tm.fr/fr/utilisations/index.htm">Site ASN.1 - Utilisations</a></span>
</li>
</ol></div>
</div>
<p><cite class="ouvrage" style="font-style: normal"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Cet article contient des extraits de la <span class="lang-en" lang="en"><a href="Free_On-line_Dictionary_of_Computing" title="Free On-line Dictionary of Computing">Free On-line Dictionary of Computing</a></span> qui <a href="https://en.wikipedia.org/wiki/Wikipedia:Foldoc_license" class="extiw external" title="en:Wikipedia:Foldoc license">autorise</a> l'utilisation de son contenu sous licence <a href="Licence_de_documentation_libre_GNU" title="Licence de documentation libre GNU">GFDL</a>.</cite>
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Liens_internes">Liens internes</h3></div>
<ul><li>Canonical Encoding Rules <a href="https://en.wikipedia.org/wiki/Canonical_Encoding_Rules" class="extiw external" title="en:Canonical Encoding Rules"><span class="indicateur-langue" title="Article en anglais : « Canonical Encoding Rules »">(en)</span></a></li>
<li><a href="Distinguished_Encoding_Rules" title="Distinguished Encoding Rules">Distinguished Encoding Rules</a></li>
<li>Packed Encoding Rules <a href="https://en.wikipedia.org/wiki/Packed_Encoding_Rules" class="extiw external" title="en:Packed Encoding Rules"><span class="indicateur-langue" title="Article en anglais : « Packed Encoding Rules »">(en)</span></a></li>
<li><a href="Simple_Network_Management_Protocol" title="Simple Network Management Protocol">Simple Network Management Protocol</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf">ITU-T X.690, ISO/IEC 8825-1</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.itu.int/ITU-T/asn1/database/itu-t/x/x892/2005/index.html">ITU-T X.892, ISO/IEC 24824-2</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.itu.int/ITU-T/studygroups/com17/languages/X694.pdf">ITU-T X.694, ISO/IEC ISO/IEC 8825-5</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://www.beanit.com/asn1/">jASN1</a> Java ASN.1 BER/DER library sur beanit.com</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2020-03-03" href="https://fr.wikipedia.org/wiki/?title=Basic_Encoding_Rules&oldid=168067133">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>